The execution time of a multi-threaded application can be slow even if the application uses a small amount of CPU, I/O, and/or memory. There may be several explanations for an application's threads' slow execution times. For example, one thread may do numerous computations while other threads are idle, either waiting for the executing thread's result or because they have finished processing. When threads are waiting while one thread is executing, CPU utilization is only 1/N where N is the number of CPU cores.
Another reason for slow execution times is that an application may be designed to execute in sequence so threads pass information one to the other and sequentially execute. An application designed sequentially does not use more than one CPU core at a time. Although CPU usage in both of these examples is low, slowness may occur in execution of applications using these designs.
Regardless of the reason for application thread slowness, there is no convenient method to find the exact causes of execution slowness especially when applications are designed for cross-platform execution. As recognized by the inventor, there should be an easier way to analyze the performances of multi-threaded applications executing on multi-core CPUs in order to determine the cause of slow execution times and provide information so a software engineer can establish ways to speed up applications.